package top.ljlgithub.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import top.ljlgithub.domain.Book;
import top.ljlgithub.service.BookService;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName
 * @Description TODO
 * @Author L1470
 * @Date 2021/3/16 18:09
 * @Version 1.0
 **/
@Controller
@RequestMapping("/book")
public class BookController {
    @Autowired
    BookService bookService;
    //查询所有的书籍
    @RequestMapping("/allBook")
    public ModelAndView allBooks(){
        ModelAndView mv = new ModelAndView();
        List<Book> books = bookService.findBooks();
        mv.addObject("books",books);
        mv.setViewName("allBook");
        return mv;
    }
    //跳转到增加书籍的页面
    @RequestMapping("/toAddBook")
    public String toAddPaper(){
        return "toAddBook";
    }
    //实现添加一本书
    @RequestMapping("/addBook")
    public String addBook(Book book){
        bookService.addBook(book);
        //添加完后返回主页面
        //应该使用重定向redirect，因为只有这样才会从数据库重新查询
        return "redirect:/book/allBook.do";
    }
    @RequestMapping("/toUpdatePaper")
    public String toUpdatePaper(int id,Model model){
        Book book = bookService.findBook(id);
        //System.out.println(book.getBookID());//7
        model.addAttribute("QBook",book);
        return "toUpdatePaper";
    }
    @RequestMapping("/updateBook.do")
    public String updateBook(Book book){
        //System.out.println(book);//这一步出现问题，因为对象无法接收
        bookService.updateBook(book);
        //修改页面后，应该返回到主页面
        //注意使用了redirect or forward后视图解析器不再起作用了
        return "redirect:/book/allBook.do";
    }
    @RequestMapping("/deleteBook")
    public String deleteBook(int id){
        int i = bookService.removeBookById(id);
        if (i>0){
            System.out.println("操作成功");
        }
        //注意redirect是让用户重新向服务器发起请求，
        //所以资源必须是外部的，必须通过controller进入的内部资源
        return "redirect:/book/allBook.do";
    }
    @RequestMapping("/queryBook")
    public String queryBook(String bookName,Model model){
        ArrayList<Book> books = new ArrayList<>();
        Book book = null;
        //1.判断bookName是否为空,不为空，如果用户没有输入，则为空字符串，不是null
        if (bookName.equals("")){
            //用户没有输入
            model.addAttribute("error","请输入书籍名称");
        }else {
            //用户输入了，通过bookName查询
            book = bookService.queryBook(bookName);
            if (book == null){
                //如果book为null，说明该书籍不存在
                model.addAttribute("error","未查到");
            }else {
                books.add(book);
            }
        }
        //覆盖之前list
        model.addAttribute("books",books);
        return "allBook";
    }


}
